<?php

namespace App\Http\Controllers\admin;

use Illuminate\Http\Request;
use \DB;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use \App\Http\Requests\UserPostRequest;


class TypeController extends Controller
{   
    //隐式控制器中间件(在该隐式控制器的方法里加上如下代码,就可以限定该隐式控制器的所有方法)
    protected $middleware = ['App\Http\Middleware\LogMiddleware'=>[]];
    
    /**
     * 分类列表页面
     * $num 页面显示条数
     * $types 版块信息
     * $all 条数和查找信息
     * @return $types $all
     */
    public function getIndex(Request $request)
    {
        //显示获取显示条数
        $num = $request->input('num',10);
        //判断用户是否查询
        if($request->input('keyword')){
            //查找数据库用户资料
            $types = DB::table('type')
            ->where('type','like','%'.$request->input('keyword').'%')
            ->paginate($num);
        }else{
            $types = DB::table('type')->paginate($num);
            // dd($types);
        }
        // dd($types);
        //获取参数
        $all = $request->all();
        //返回路径和参数
        return view('admin.type.index',['types'=>$types,'all'=>$all]);


    }

    /**
     * 视频显示页面
     * $num 页面显示条数
     * $types 视频信息
     * $all 条数和查找信息
     * @return $types $all
     */
    public function getVideoindex(Request $request)
    {   

        //显示获取显示条数
        $num = $request->input('num',10);
        //判断用户是否查询
        if($request->input('keyword')){
            //查找数据库用户资料
            $types = DB::table('video')
            ->join('type','video.tid','=','type.id')
            ->select('video.*', 'type.type')
            ->where('film','like','%'.$request->input('keyword').'%')
            ->where('status',1)
            ->orderBy('id', 'desc')
            ->paginate($num);
            
        }else{
            //查询列表信息
            $types = DB::table('video')
                    ->join('type','video.tid','=','type.id')
                    ->select('video.*', 'type.type')
                    ->where('status',1)
                    ->orderBy('id','desc')
                    ->paginate($num);
            
        }    
        // dd($types);
        //获取参数
        $all = $request->all();
        //提交到列表页面
        return view('admin.type.videoindex',['types'=>$types,'all'=>$all]);

    }

    /**
     * ajax审核视频
     * $id 视频id信息	
     * @return divo
     */
    public function postMents(Request $request)
    {
    	//获取id信息
    	$id = $request->input('id');
    	// dd($id);
    	//修改数据库
    	$res = DB::table('video')->where('id',$id)->update(['status'=>1]);
        //查询用户信息
        $row = DB::table('video')->where('id',$id)->first();
        
        //修改用户积分
        $rows = DB::table('userdetail')->where('uid',$row->uid)->increment('score',100);
    	// dd($rows);
        //判断
    	if($res){
    		echo 1;
    	}else{
    		echo 2;
    	}
    }

    /**
     * 审核显示页面
     * $num 页面显示条数
     * $mine 视频信息
     * $all 条数和查找信息
     * @return $mine $all
     */
    public function getMineindex(Request $request)
    {   

        //显示获取显示条数
        $num = $request->input('num',10);
        //判断用户是否查询
        if($request->input('keyword')){
            //查找数据库用户资料
            $mines = DB::table('video')
            ->join('type','video.tid','=','type.id')
            ->select('video.*', 'type.type')
            ->where('film','like','%'.$request->input('keyword').'%')
            ->where('status',0)
            ->orderBy('id', 'desc')
            ->paginate($num);
            
        }else{
            //查询列表信息
            $mines = DB::table('video')
                    ->join('type','video.tid','=','type.id')
                    ->select('video.*', 'type.type')
                    ->where('status',0)
                    ->orderBy('id','desc')
                    ->paginate($num);
        }    
        // dd($types);
        //获取参数
        $all = $request->all();
        //提交到列表页面
        return view('admin.type.mineindex',['mines'=>$mines,'all'=>$all]);

    }

    /**
     * 提交到视频添加页
     * 
     * @return viod
     */
	public function getAdd()
    {   
        
        //显示添加表单
        return view('admin.type.add');
    }

    /**
     * 提交到视频添加页
     * $videos 所有分类信息
     * @return $videos
     */
    public function getVideoadd()
    {
         //查询所有分类
        $videos = DB::table('type')->get();
        
        //显示添加表单
        return view('admin.type.videoadd',['videos'=>$videos]);
    }

    /**
     * 分类添加到数据库
     * $data 版块提交的信息
     * $res 数据库返回id
     * @return viod
     */
    public function postTypeinsert(Request $request)
    {   
        //获取信息
        $data = $request->except(['_token']);
        // dd($data);
        //判断填写信息是否为空
        if($data['type'] == ''){
            return back()->with('error','填写信息不能为空');
        }
        //添加到数据库
        $res = DB::table('type')->insertGetId($data);
        //判断
        if($res){
            return redirect('admin/type/index');
        }else{
            return back()->withInput();
        }
    }

    /**
     * 视频和海报添加到数据库
     * $data 视频提交的信息
     * $res 数据库返回id
     * @return viod
     */
    public function postInsert(Request $request)
    {   
        //获取信息
        $data = $request->only(['tid','film','content','describe','url','upload','vips']);
        // dd($data);
        //判断提交信息不能为空
        if($data['film'] == '' || $data['content'] == '' || $data['describe'] == '' || $data['url'] == '' || $data['upload'] == ''){
            return back()->with('error','填写信息不能为空');
        }
        // dd($data);
        //调用图片路径信息
        $data['url'] = $this->upload($request);
        //调用视频路径信息
        $data['upload'] = $this->doload($request);
        //用session获取用户id
        $data['uid'] = $_SESSION['id'];
        //添加审核属性
        $data['status'] = 1;
        // dd($data);
        //添加到数据库
        $res = DB::table('video')->insertGetId($data);
        //判断
        if($res){
            return redirect('admin/type/videoindex');
        }else{
            return back()->withInput();
        }

    }

    /**
     * 海报上传函数
     * $name 随机名
     * $suffix 文件后缀名
     * $size 文件大小
     * $arr 文件类型
     * @return $name.$suffix
     */
    public function upload($request)
    {
        //判断海报是否上传
        // dd($request->hasFile('url'));
        if($request->hasFile('url')){
            //随机生成文件名
            $name = md5(time()+rand(100000,999999));
            //获取文件后缀名
            $suffix = $request->file('url')->getClientOriginalExtension();
            // dd($suffix);
            //获取海报大小
            $size = $request->file('url')->getsize();
            //判断海报是否过大
            if($size>2024000){
                return back()->with('error','上传文件过大');
            }
            //文件格式
            $arr = ['png','jpg','jpeg','gif'];
            //判断文件格式是否正确
            if(!in_array($suffix,$arr)){
                return back()->with('error','上传文件格式不正确');
            }
            //上传到指定路径
            $request->file('url')->move('./public/poster/',$name.'.'.$suffix);
            //返回路径
            return '/public/poster/'.$name.'.'.$suffix;
        }
    }

    /**
     * 视频上传函数
     * $name 随机名
     * $suffix 文件后缀名
     * $size 文件大小
     * $arr 文件类型
     * @return $name.$suffix
     */
    public function doload($request)
    {
        //判断视频是否上传
        // dd($request->hasFile('upload'));
        if($request->hasFile('upload')){
            //随机生成文件名
            $name = md5(time()+rand(100000,999999));
            //获取文件后缀名
            $suffix = $request->file('upload')->getClientOriginalExtension();
            // dd($suffix);
            //获取文件大小
            $size = $request->file('upload')->getsize();
            //判断文件是够过大
            if($size>2024000000){
                return back()->with('error','上传文件过大');
            }
            //文件格式
            $arr = ['rm','rmvb','wmv','avi','mp4','3gp','mkv','mrp'];
            //判断文件格式是否正确
            if(!in_array($suffix,$arr)){
                return back()->with('error','上传文件格式不正确');
            }
            //上传到指定路径
            $request->file('upload')->move('./public/video/',$name.'.'.$suffix);

            //返回路径
            return '/public/video/'.$name.'.'.$suffix;
        }
    }

    /**
     * ajax 删除分类
     * $id 分类id
     * $res 删除分类
     * @return $res
     */
    public function postDelete(Request $request)
    {
        //获取id
        $id = $request->input('id');
        //查询分类下是否存在视频
        $row = DB::table('video')->where('tid',$id)->count();
        //判断
        if($row < 1){
            //删除分类信息
            $res = DB::table('type')->where('id',$id)->delete();
            echo $res;
        }
    }

    /**
     * ajax 删除视频
     * $id 视频id
     * $res 删除视频
     * @return $res
     */
    public function postVideodel(Request $request)
    {
        //获取id
        $id = $request->input('id');
        //删除分类信息
        $res = DB::table('video')->where('id',$id)->delete();
        echo $res;
    }


    /**
     * 修改分类表单
     * $id 分类id
     * $res 分类信息
     * @return $res
     */
    public function getUp(Request $request)
    {
        //获取id
        $id = $request->input('id');
        //获取分类信息
        $res = DB::table('type')->where('id',$id)->get();
        //返回信息
        return view('admin.type.update',['res'=>$res]);
    }

    /**
     * 修改分类数据
     * $data 分类提交信息
     * $res 修改分类数据
     * @return vido
     */
    public function postUpdate(Request $request)
    {
        //获取信息
        $data = $request->except(['_token']); 
        // dd($data);
        //判断填写信息是否为空
        if($data['type'] == ''){
            return back()->with('error','填写信息不能为空');
        }
        //修改数据库信息
        $res = DB::table('type')->where('id',$data['id'])->update($data);
        //判断
        if($res){
            return redirect('admin/type/index')->with('success','修改成功');
        }else{
            return back()->with('error','修改失败');
        }

    }

    /**
     * 视频修改表单
     * $id 视频id
     * $res 视频信息
     * @return $res
     */
    public function getVideoup(Request $request)
    {   
        //获取id信息
        $id = $request->input('id');
        //查询数据库详细信息
        $res = DB::table('video')->where('id',$id)->get();
        //返还数据
        return view('admin.type.videoupdate',['res'=>$res]);
    }

    /**
     * 修改视频数据
     * $data
     * $res 视频信息
     * @return $res
     */
    public function postVideoupdate(Request $request)
    {
        //获取信息
        $data = $request->except(['_token']); 
        
        //判断提交信息不能为空
        if($data['film'] == '' || $data['content'] == '' || $data['describe'] == ''){
            return back()->with('error','填写信息不能为空');
        }
        //判断海报是否上传
        if($request->hasFile('url')){
            $data['url'] = $this->upload($request);
        }
        //判断视频是否上传
        if($request->hasFile('upload')){
            $data['upload'] = $this->doload($request);
        }
        // dd($data);
        //修改数据库信息
        $res = DB::table('video')->where('id',$data['id'])->update($data);
        //判断
        if($res){
            return redirect('admin/type/videoindex')->with('success','修改成功');
        }else{
            return back()->with('error','修改失败');
        }
    }

    /**
     * ajax 读取session值
     * $id 视频id
     * $res 视频信息
     * @return $res
     */
    public function getStorage(Request $request)
    {
        if(@$_SESSION['upload_progress_hm']['content_length']){
            $du = $_SESSION['upload_progress_hm']['bytes_processed']/$_SESSION['upload_progress_hm']['content_length'];
            echo json_encode($du);
        }else{
            $du = 1;
            echo json_encode($du);
        }        
    }

    /**
     * 视频展示设置
     * $id 视频id
     * $res 视频信息
     * @return $res
     */
    // public function getShow(Request $request)
    // {
    //     //获取id
    //     $id = $request->input('id');
    //     //获取视频信息
    //     $res = DB::table('video')->where('id',$id)->first();
    //     // dd($res);
    //     //返回到首页
    //     return view('/home/index',['res'=>$res]);
    // }
}
